#!/bin/bash

# qutebrowser会将选中的文本作为第一个参数传递
SELECTED_TEXT="$1"

# 如果没有参数，尝试从标准输入读取（备用方法）
if [ -z "$SELECTED_TEXT" ]; then
  SELECTED_TEXT=$(cat)
fi

# 检查是否选中了文本
if [ -z "$SELECTED_TEXT" ]; then
  notify-send "翻译错误" "请先选择要翻译的文本" -u critical
  exit 1
fi

# 去除首尾空格
SELECTED_TEXT=$(echo "$SELECTED_TEXT" | xargs)

# 再次检查去除空格后是否为空
if [ -z "$SELECTED_TEXT" ]; then
  notify-send "翻译错误" "选中的文本为空" -u critical
  exit 1
fi

# 尝试使用kd命令翻译
if command -v kd &>/dev/null; then
  TRANSLATION=$(kd -t "$SELECTED_TEXT" 2>/dev/null)
else
  # 如果kd命令不存在，使用Google Translate API
  ENCODED_TEXT=$(echo "$SELECTED_TEXT" | sed 's/ /%20/g')
  TRANSLATION=$(curl -s "http://translate.googleapis.com/translate_a/single?client=gtx&sl=auto&tl=zh&dt=t&q=$ENCODED_TEXT" | jq -r '.[0][0][0]' 2>/dev/null)
fi

# 检查翻译是否成功
if [ $? -ne 0 ] || [ -z "$TRANSLATION" ] || [ "$TRANSLATION" = "null" ]; then
  notify-send "翻译失败" "无法翻译: $SELECTED_TEXT" -u critical
  exit 1
fi

# 发送桌面通知显示翻译结果
notify-send "翻译结果" "原文: $SELECTED_TEXT\n译文: $TRANSLATION" -t 5000

echo "翻译完成: $SELECTED_TEXT -> $TRANSLATION"
